import gymnasium as gym
#render_mode="human"实时渲染动画（需支持图形界面）
env = gym.make("CartPole-v1", render_mode="human")
#重置环境到初始状态，返回初始观测值 observation（数组形式）和调试信息 info
# 观测值结构：[推车位置x, 推车速度ẋ, 杆角度θ, 杆角速度θ̇]
observation, info = env.reset()
print(f"Starting observation: {observation}")

episode_over = False
total_reward = 0

while not episode_over:
    #每一步随机选择动作（0 或 1），执行后环境返回新的状态、奖励、终止标志等。
    action = env.action_space.sample()
    observation, reward, terminated, truncated, info = env.step(action)
    # 奖励机制：每存活一步获得 +1 奖励，杆倒下或推车越界则终止。
    total_reward += reward
    # 终止条件：
    # terminated：杆角度超过 ±15° 或推车位置超出轨道范围（±2.4 单位）。
    # truncated：达到最大步数（默认 500 步）。
    episode_over = terminated or truncated

print(f"Episode finished! Total reward: {total_reward}")
env.close()